HAL SAI IRQ handler and callbacks functions migration

This section provides information about the HAL SAI callbacks register/unregister functions migration.

HAL SAI IRQ handler function

HAL1

HAL2

HAL_SAI_IRQHandler(&hsai)
HAL_SAI_IRQHandler(&hsai)

Related concept:


HAL SAI register/unregister callback functions

HAL SAI register callback

In HAL1, the function HAL_SAI_RegisterCallback() is used to register various SAI callbacks through a single function with a specific callback ID, whereas, in HAL2, distinct functions are available to register each specific SAI callback.

Function

HAL 1

HAL 2

Tx Complete Callback

HAL_SAI_RegisterCallback(&hsai,
                         HAL_SAI_TX_COMPLETE_CB_ID,
                         USER_SAI_TxCpltCallback);
HAL_SAI_RegisterTxCpltCallback(&hsai,
                               USER_SAI_TxCpltCallback);

Rx Complete Callback

HAL_SAI_RegisterCallback(&hsai,
                         HAL_SAI_RX_COMPLETE_CB_ID,
                         USER_SAI_RxCpltCallback)
HAL_SAI_RegisterRxCpltCallback(&hsai,
                               USER_SAI_RxCpltCallback);

Tx Half Complete Callback

HAL_SAI_RegisterCallback(&hsai,
                         HAL_SAI_TX_HALFCOMPLETE_CB_ID,
                         USER_SAI_TxHalfCpltCallback);
HAL_SAI_RegisterTxHalfCpltCallback(&hsai,
                                   USER_SAI_TxHalfCpltCallback);

Rx Half Complete Callback

HAL_SAI_RegisterCallback(&hsai,
                         HAL_SAI_RX_HALFCOMPLETE_CB_ID,
                         USER_SAI_RxHalfCpltCallback);
HAL_SAI_RegisterRxHalfCpltCallback(&hsai,
                                   USER_SAI_RxHalfCpltCallback);

SAI error callback

HAL_SAI_RegisterCallback(&hsai,
                         HAL_SAI_ERROR_CB_ID,
                         USER_SAI_ErrorCallback);
HAL_SAI_RegisterErrorCallback(&hsai,
                              USER_SAI_ErrorCallback);

SAI Msp init callback

HAL_SAI_RegisterCallback(&hsai,
                         HAL_SAI_MSPINIT_CB_ID,
                         USER_SAI_MspInitCallback);
/* Removed/Sequence changed */

See Generated SAI initialization and de-initialization sequences for more details.

SAI Msp Deinit callback

HAL_SAI_RegisterCallback(&hsai,
                         HAL_SAI_MSPDEINIT_CB_ID,
                         USER_SAI_MspDeinitCallback);
/* Removed/Sequence changed */

See Generated SAI initialization and de-initialization sequences for more details.

Related concept:


HAL SAI unregister callback

In HAL2, the unregister callback API HAL_SAI_UnRegisterCallback() has been removed. Instead, callbacks can be managed by re-registering the default HAL SAI weak callbacks as needed.

Function

HAL 1

HAL 2

Tx Complete Callback

HAL_SAI_UnRegisterCallback(&hsai,
                           HAL_SAI_TX_COMPLETE_CB_ID);
HAL_SAI_RegisterTxCpltCallback(&hsai,
                               HAL_SAI_TxCpltCallback);

Rx Complete Callback

HAL_SAI_UnRegisterCallback(&hsai,
                           HAL_SAI_RX_COMPLETE_CB_ID);
HAL_SAI_RegisterRxCpltCallback(&hsai,
                               HAL_SAI_RxCpltCallback);

Tx Half Complete Callback

HAL_SAI_UnRegisterCallback(&hsai,
                           HAL_SAI_TX_HALFCOMPLETE_CB_ID);
HAL_SAI_RegisterTxHalfCpltCallback(&hsai,
                                   HAL_SAI_TxHalfCpltCallback);

Rx Half Complete Callback

HAL_SAI_UnRegisterCallback(&hsai,
                           HAL_SAI_RX_HALFCOMPLETE_CB_ID);
HAL_SAI_RegisterRxHalfCpltCallback(&hsai,
                                   HAL_SAI_RxHalfCpltCallback);

SAI error callback

HAL_SAI_UnRegisterCallback(&hsai,
                           HAL_SAI_ERROR_CB_ID);
HAL_SAI_RegisterErrorCallback(&hsai,
                              HAL_SAI_ErrorCallback);

SAI Msp init callback

HAL_SAI_UnRegisterCallback(&hsai,
                           HAL_SAI_MSPINIT_CB_ID);
/* Removed / Sequence changed */

See Generated SAI initialization and de-initialization sequences for more details.

SAI Msp Deinit callback

HAL_SAI_UnRegisterCallback(&hsai,
                           HAL_SAI_MSPDEINIT_CB_ID);
/* Removed/Sequence changed */

See Generated SAI initialization and de-initialization sequences for more details.

Related concept:


HAL SAI error callback

HAL1

HAL2

void HAL_SAI_ErrorCallback(SAI_HandleTypeDef *hsai);
void HAL_SAI_ErrorCallback(hal_sai_handle_t *hsai);

HAL SAI receive complete callback

HAL1

HAL2

void HAL_SAI_RxCpltCallback(SAI_HandleTypeDef *hsai);
void HAL_SAI_RxCpltCallback(hal_sai_handle_t *hsai);

HAL SAI receive half complete callback

HAL1

HAL2

void HAL_SAI_RxHalfCpltCallback(SAI_HandleTypeDef *hsai);
void HAL_SAI_RxHalfCpltCallback(hal_sai_handle_t *hsai);

HAL SAI transmit complete callback

HAL1

HAL2

void HAL_SAI_TxCpltCallback(SAI_HandleTypeDef *hsai);
void HAL_SAI_TxCpltCallback(hal_sai_handle_t *hsai);

HAL SAI transmit half complete callback

HAL1

HAL2

void HAL_SAI_TxHalfCpltCallback(SAI_HandleTypeDef *hsai);
void HAL_SAI_TxHalfCpltCallback(hal_sai_handle_t *hsai);

HAL SAI callback type definition

HAL1

HAL2

typedef void (*pSAI_CallbackTypeDef)(SAI_HandleTypeDef *hsai);
typedef  void (*hal_sai_cb_t)(hal_sai_handle_t *hsai);